﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using RayTracer.Structures;
using System.Xml;

namespace RayTracer.Environment.Lights
{
    /// <summary>
    /// Modelliert ein Licht.
    /// </summary>
    [Serializable]
    public class SimpleLight : ALight
    {
        #region Attribute
        #endregion Attribute

        #region Eigenschaften
        #endregion Eigenschaften

        #region Methoden
        #region Konstruktoren und Destruktoren
        /// <summary>
        /// Instanziiert und initialisiert das Licht mit Standardwerten.
        /// </summary>
        public SimpleLight() : this(new Structures.Point(), Color.White) { }


        /// <summary>
        /// Instanziiert und initialisiert das Licht mit Standardfarbe.
        /// </summary>
        /// <param name="position">Die Position.</param>
        public SimpleLight(Structures.Point position) : this(position, Color.White) { }


        /// <summary>
        /// Instanziiert und initialisiert das Licht mit Standardposition.
        /// </summary>
        /// <param name="color">Die Farbe.</param>
        public SimpleLight(Color color) : this(new Structures.Point(), color) { }

        /// <summary>
        /// Instanziiert und initialisiert das Licht.
        /// </summary>
        /// <param name="position">Die Position.</param>
        /// <param name="color">Die Farbe.</param>
        public SimpleLight(Structures.Point position, Color color)
        {
            this.Position = position;
            this.Color = color;
        }
        #endregion Konstruktoren und Destruktoren
        #region Typenumwandlung
        /// <summary>
        /// Erstellt ein einfaches Licht aus einem XML-Knoten.
        /// </summary>
        /// <param name="xmlNode">Das XML-Knoten.</param>
        /// <returns>Das einfache Licht.</returns>
        internal static SimpleLight FromXml(XmlNode xmlNode)
        {
            SimpleLight light = new SimpleLight();
            ALight.FromXml(xmlNode, light);
            return light;
        }

        /// <summary>
        /// Wandelt das Licht in einen XML-Knoten um.
        /// </summary>
        /// <param name="xmlDocument">Das zugrunde liegende XML-Dokument.</param>
        /// <returns>Der XML-Knoten.</returns>
        internal override XmlNode ToXml(XmlDocument xmlDocument)
        {
            return base.ToXml(xmlDocument);
        }
        #endregion Typenumwandlung
        #endregion Methode
    }
}
